package cn.xyfmzmy.eventloop;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Main {

    /**
     * JDK线程池与Netty里的EventLoopGroup的区别：
     * 1. JDK线程池不能指定具体的线程来执行任务；
     * 2. JDK线程池里的线程(默认的)不具备执行定时任务的能力；
     * 3. JDK线程池里的线程数量是动态变换的，EventLoopGroup的线程数量是固定的
     */
    public static void main(String[] args) {
        EventLoopGroup eventLoopGroup = new MzmyEventLoopGroup(4);
        // 指定用第二个eventLoop来执行
        for(int i=0;i<100;i++){
            eventLoopGroup.execute(new TargetRunnable(1,()->{
                System.out.println(Thread.currentThread().getName());
            }));
        }
//        eventLoopGroup.scheduleAtFixedRate(()->{
//            System.out.println(1);
//        },0,1, TimeUnit.SECONDS);
//        // 执行定时任务
//        for(int i=0;i<1000;i++){
//            eventLoopGroup.execute(()->{
//                System.out.println(Thread.currentThread().getName());
//                try {
//                    Thread.sleep(100);
//                } catch (InterruptedException e) {
//                    throw new RuntimeException(e);
//                }
//            });
//        }
    }
}
